From 7168b6d635163bcc30bf26a1baf1c53b2944edb3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Thu, 7 Apr 2016 16:45:17 +0200 Subject: [PATCH] ttl-generator for lv2 (taken from m.kronlachners ambix-plugins, which in turn took it from distrho/falktx) --- debian/extra/lv2-ttl-generator/GNUmakefile | 16 ++++ .../extra/lv2-ttl-generator/generate-ttl.sh | 40 +++++++++ .../lv2-ttl-generator/lv2_ttl_generator.c | 81 +++++++++++++++++++ debian/extra/lv2-ttl-generator/readme.txt | 7 ++ 4 files changed, 144 insertions(+) create mode 100644 debian/extra/lv2-ttl-generator/GNUmakefile create mode 100755 debian/extra/lv2-ttl-generator/generate-ttl.sh create mode 100644 debian/extra/lv2-ttl-generator/lv2_ttl_generator.c create mode 100644 debian/extra/lv2-ttl-generator/readme.txt diff --git a/debian/extra/lv2-ttl-generator/GNUmakefile b/debian/extra/lv2-ttl-generator/GNUmakefile new file mode 100644 index 00000000..024f2a1f --- /dev/null +++ b/debian/extra/lv2-ttl-generator/GNUmakefile @@ -0,0 +1,16 @@ +#!/usr/bin/makefile -f + +all: build + +build: lv2_ttl_generator +mingw: lv2_ttl_generator.exe + +lv2_ttl_generator: lv2_ttl_generator.c + $(CXX) lv2_ttl_generator.c -o lv2_ttl_generator -ldl + +lv2_ttl_generator.exe: lv2_ttl_generator.c + $(CXX) lv2_ttl_generator.c -o lv2_ttl_generator.exe -static + touch lv2_ttl_generator + +clean: + rm -f lv2_ttl_generator lv2_ttl_generator.exe diff --git a/debian/extra/lv2-ttl-generator/generate-ttl.sh b/debian/extra/lv2-ttl-generator/generate-ttl.sh new file mode 100755 index 00000000..d5ef597e --- /dev/null +++ b/debian/extra/lv2-ttl-generator/generate-ttl.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +#set -e +#echo "Please run this script from the _bin folder" + +error() { + echo "$@" 1>&2 +} + +SCRIPTPATH=$(cd ${0%/*}; pwd) + +if [ -f ${SCRIPTPATH}/lv2_ttl_generator.exe ]; then + GEN=${SCRIPTPATH}/lv2_ttl_generator.exe + EXT=dll +else + GEN=${SCRIPTPATH}/lv2_ttl_generator + EXT=so +fi +if [ ! -x "${GEN}" ]; then + error "unable to find lv2_ttl_generator" + exit 1 +fi + +SEARCHPATH=$1 +if [ "x${SEARCHPATH}" = "x" ]; then + if [ -d "lv2" ]; then + SEARCHPATH="lv2" + fi + if [ ! -d "${SEARCHPATH}" ]; then + SEARCHPATH=. + fi +fi +if [ ! -d "${SEARCHPATH}" ]; then + error "cannot search plugins in non-existing directory ${SEARCHPATH}" + exit 1 +fi + + +find ${SEARCHPATH} -type d -name "*.lv2" -exec /bin/sh -c "cd {}; ${GEN} ./*.${EXT}" \; + diff --git a/debian/extra/lv2-ttl-generator/lv2_ttl_generator.c b/debian/extra/lv2-ttl-generator/lv2_ttl_generator.c new file mode 100644 index 00000000..bd19f416 --- /dev/null +++ b/debian/extra/lv2-ttl-generator/lv2_ttl_generator.c @@ -0,0 +1,81 @@ +/* + * JUCE LV2 *.ttl generator + */ + +#include +#include + +#ifdef _WIN32 + #include + #define TTL_GENERATOR_WINDOWS +#else + #include +#endif + +#ifndef nullptr + #define nullptr (0) +#endif + +typedef void (*TTL_Generator_Function)(const char* basename); + +int main(int argc, char* argv[]) +{ + if (argc != 2) + { + printf("usage: %s /path/to/plugin-DLL\n", argv[0]); + return 1; + } + +#ifdef TTL_GENERATOR_WINDOWS + const HMODULE handle = LoadLibraryA(argv[1]); +#else + void* const handle = dlopen(argv[1], RTLD_LAZY); +#endif + + if (! handle) + { +#ifdef TTL_GENERATOR_WINDOWS + printf("Failed to open plugin DLL\n"); +#else + printf("Failed to open plugin DLL, error was:\n%s\n", dlerror()); +#endif + return 2; + } + +#ifdef TTL_GENERATOR_WINDOWS + const TTL_Generator_Function ttlFn = (TTL_Generator_Function)GetProcAddress(handle, "lv2_generate_ttl"); +#else + const TTL_Generator_Function ttlFn = (TTL_Generator_Function)dlsym(handle, "lv2_generate_ttl"); +#endif + + if (ttlFn != NULL) + { + char basename[strlen(argv[1])+1]; + +#ifdef TTL_GENERATOR_WINDOWS + if (char* base2 = strrchr(argv[1], '\\')) +#else + if (char* base2 = strrchr(argv[1], '/')) +#endif + { + strcpy(basename, base2+1); + basename[strrchr(base2, '.')-base2-1] = '\0'; + } + else + strcpy(basename, argv[1]); + + printf("Generate ttl data for '%s', basename: '%s'\n", argv[1], basename); + + ttlFn(basename); + } + else + printf("Failed to find 'lv2_generate_ttl' function\n"); + +#ifdef TTL_GENERATOR_WINDOWS + FreeLibrary(handle); +#else + dlclose(handle); +#endif + + return 0; +} diff --git a/debian/extra/lv2-ttl-generator/readme.txt b/debian/extra/lv2-ttl-generator/readme.txt new file mode 100644 index 00000000..0bd3ab5e --- /dev/null +++ b/debian/extra/lv2-ttl-generator/readme.txt @@ -0,0 +1,7 @@ +this lv2_ttl_generator is taken from DISTRHO by Filipe Coelho (aka 'falkTX') + +http://distrho.sourceforge.net +https://github.com/falkTX/DISTRHO + + +this small tool creates the needed .ttl files out of the plug-in binaries (.so) for the .lv2 bundle -- 2.30.2